package com.zhang.yunfu_norevocation.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zhang.yunfu_norevocation.entity.dto.InquiryPrescriptionDO;
import com.zhang.yunfu_norevocation.entity.comm.InquiryDrugOrderListVO;
import com.zhang.yunfu_norevocation.entity.comm.QueryPrescriptionREQ;
import com.zhang.yunfu_norevocation.entity.vo.QueryDrugOrderREQ;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface InquiryPrescriptionNoMapper extends BaseMapper<InquiryPrescriptionDO>{

    /**
     * 根据类型查询处方列表
     *
     * @param queryPrescriptionREQ
     * @return
     */
    List<InquiryPrescriptionDO> queryPrescription(@Param("req") QueryPrescriptionREQ queryPrescriptionREQ);

    List<InquiryDrugOrderListVO> queryPharmacyOrderList(@Param("req") QueryDrugOrderREQ queryPrescriptionREQ);


    /**
     * @param prescriptId
     * @return
     */
    int rejectPrescript(@Param("prescriptId") String prescriptId);

    int rejectPrescriptId(@Param("prescriptId") String prescriptId);

    int reviewPrescript(@Param("prescriptId") String prescriptId, @Param("reviewDoctorId") String reviewDoctorId, @Param("name") String name, @Param("url") String reviewDoctorSignUrl,@Param("hMac") String hMac);

    /**
     * 根据医嘱id查询处方列表
     * 陈隆
     *
     * @param adviceId
     * @return
     */
    List<InquiryPrescriptionDO> queryPrescriptByAdviceId(@Param("adviceId") String adviceId);

    /**
     * 根据医嘱id查询处方列表
     *
     * @return
     */
    List<InquiryPrescriptionDO> getPrescriptionByAdviceId(@Param("adviceId") String adviceId);

    /**
     * 根据病人id和订单状态查询购药记录
     *
     * @return
     */
  //  List<BuyMedicineListVO> buyMedicineList(@Param("patientId") String patientId, @Param("orderType") String orderType);

   // List<BuyMedicineListVO> buyMedicineList2(@Param("patientId") String patientId);

    /**
     * 根据订单id获取购药记录详情
     *
     * @param orderId 订单id
     * @return
     */
   // BuyMedicineDetailVO buyMedicineDetail(@Param("orderId") String orderId);

    /**
     * 按照账号查询用户
     *
     * @param prescriptId
     * @return
     */
    String getPrescriptHospital(@Param("req") String prescriptId);

    /**
     * 根据处方id关联查询医嘱及相关信息,用于支付前验证
     *
     * @param id
     * @return
     */
   // PrescriptVerifyVO prescriptVerify(@Param("id") String id);

    /**
     * 验证处方订单是否可以下单
     * （查询订单表中是否有1-待支付、2-待发货、3-待收货、4-已完成）
     *
     * @param doctorAdviceId
     * @return
     */
    int countByStatus(@Param("doctorAdviceId") String doctorAdviceId, @Param("orderType") String orderType);

    /**
     * 根据urId查询信息
     *
     * @param urId
     * @return
     */
    InquiryPrescriptionDO getByDoctorUrId(@Param("urId") String urId);

    /**
     * 数字医信回调审核处方
     *
     * @param reviewTempREQ
     * @return
     */
    //int reviewPrescriptNum(@Param("reviewTempREQ") ReviewTempREQ reviewTempREQ);

    /**
     * 获取药品订单详情
     * @param
     * @return
     */
  //  List<AddOrderREQ.Info> getMedicine(@Param("orderNo") String orderNo);


   // DelPreREQ getPrescriptionByOrder(@Param("orderNo") String orderNo);

   // Order getYxtOrder(String orderNo);

   // int addRxPic(AddRxPicREQ req);

   // CallJH1608REQ queryInquiryPrescript(@Param("req") ReviewPrescriptREQ reviewPrescriptREQ);

   // List<CallJH1608REQ.RxDrugDetail> queryRxDrugDetail(@Param("req") ReviewPrescriptREQ reviewPrescriptREQ);

    String getOrderIdByPrescriptId(@Param("id")String id);

    //更改审核医生和hMac
    int onlyDoctorNameAndHMac(@Param("reviewDoctorName")String encryptedReviewDoctorName2Base64, @Param("hMac")String hmac,@Param("prescriptId")String prescriptId);

    List<InquiryPrescriptionDO> queryIdAndReviewDoctorName();

    int batchUpdateStatusByPrescriptNo(@Param("errorCheckList") List<String> errorCheckList);
    int updateStatusByPrescriptNo(@Param("prescriptNo") String errorCheck);
}
